home *** CD-ROM | disk | FTP | other *** search
/ Programming a Multiplayer FPS in DirectX / Programming a Multiplayer FPS in DirectX (Companion CD).iso / DirectX / dxsdk_oct2004.exe / dxsdk.exe / Utilities / MView / gxu / showarcball.cod < prev    next >
Encoding:
Text File  |  2004-09-30  |  27.6 KB  |  979 lines

  1. ; Listing generated by Microsoft (R) Optimizing Compiler Version 13.10.4035 
  2.  
  3.     TITLE    .\showarcball.cpp
  4.     .386P
  5. include listing.inc
  6. if @Version gt 510
  7. .model FLAT
  8. else
  9. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  10. _TEXT    ENDS
  11. _DATA    SEGMENT DWORD USE32 PUBLIC 'DATA'
  12. _DATA    ENDS
  13. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  14. CONST    ENDS
  15. _BSS    SEGMENT DWORD USE32 PUBLIC 'BSS'
  16. _BSS    ENDS
  17. $$SYMBOLS    SEGMENT BYTE USE32 'DEBSYM'
  18. $$SYMBOLS    ENDS
  19. _TLS    SEGMENT DWORD USE32 PUBLIC 'TLS'
  20. _TLS    ENDS
  21. ;    COMDAT ??_C@_04JKCKMDGO@vClr?$AA@
  22. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  23. CONST    ENDS
  24. ;    COMDAT ??0CShowArcball@@QAE@XZ
  25. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  26. _TEXT    ENDS
  27. ;    COMDAT ??1CShowArcball@@QAE@XZ
  28. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  29. _TEXT    ENDS
  30. ;    COMDAT ?Init@CShowArcball@@QAEJPAUIDirect3DDevice9@@K@Z
  31. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  32. _TEXT    ENDS
  33. ;    COMDAT ?Draw@CShowArcball@@QAEJPAUID3DXEffect@@K@Z
  34. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  35. _TEXT    ENDS
  36. ;    COMDAT ?CreateEmptyOutline@CShowArcball@@AAEJXZ
  37. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  38. _TEXT    ENDS
  39. ;    COMDAT ??0D3DXCOLOR@@QAE@MMMM@Z
  40. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  41. _TEXT    ENDS
  42. ;    COMDAT ??0D3DXCOLOR@@QAE@K@Z
  43. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  44. _TEXT    ENDS
  45. ;    COMDAT _sinf
  46. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  47. _TEXT    ENDS
  48. ;    COMDAT _cosf
  49. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  50. _TEXT    ENDS
  51. FLAT    GROUP _DATA, CONST, _BSS
  52.     ASSUME    CS: FLAT, DS: FLAT, SS: FLAT
  53. endif
  54.  
  55. INCLUDELIB LIBC
  56. INCLUDELIB OLDNAMES
  57.  
  58. PUBLIC    ??0CShowArcball@@QAE@XZ                ; CShowArcball::CShowArcball
  59. ; Function compile flags: /Ogs
  60. ; File d:\builds\nt32_fre\multimedia\directx\dxsdk\src\mview\gxu\showarcball.cpp
  61. ;    COMDAT ??0CShowArcball@@QAE@XZ
  62. _TEXT    SEGMENT
  63. ??0CShowArcball@@QAE@XZ PROC NEAR            ; CShowArcball::CShowArcball, COMDAT
  64. ; _this$ = ecx
  65.  
  66. ; 30   : {
  67.  
  68.   00000    8b c1         mov     eax, ecx
  69.   00002    33 c9         xor     ecx, ecx
  70.   00004    89 08         mov     DWORD PTR [eax], ecx
  71.   00006    89 48 04     mov     DWORD PTR [eax+4], ecx
  72.   00009    89 48 08     mov     DWORD PTR [eax+8], ecx
  73.  
  74. ; 31   : }
  75.  
  76.   0000c    c3         ret     0
  77. ??0CShowArcball@@QAE@XZ ENDP                ; CShowArcball::CShowArcball
  78. _TEXT    ENDS
  79. PUBLIC    ??1CShowArcball@@QAE@XZ                ; CShowArcball::~CShowArcball
  80. ; Function compile flags: /Ogs
  81. ;    COMDAT ??1CShowArcball@@QAE@XZ
  82. _TEXT    SEGMENT
  83. ??1CShowArcball@@QAE@XZ PROC NEAR            ; CShowArcball::~CShowArcball, COMDAT
  84. ; _this$ = ecx
  85.  
  86. ; 37   : }
  87.  
  88.   00000    8b ff         npad     2
  89.   00002    56         push     esi
  90.  
  91. ; 34   : {
  92.  
  93.   00003    8b f1         mov     esi, ecx
  94.  
  95. ; 35   :     GXRELEASE(m_pVertexBuffer);
  96.  
  97.   00005    8b 46 04     mov     eax, DWORD PTR [esi+4]
  98.   00008    85 c0         test     eax, eax
  99.   0000a    74 0a         je     SHORT $L56238
  100.   0000c    8b 08         mov     ecx, DWORD PTR [eax]
  101.   0000e    50         push     eax
  102.   0000f    ff 51 08     call     DWORD PTR [ecx+8]
  103.   00012    83 66 04 00     and     DWORD PTR [esi+4], 0
  104. $L56238:
  105.  
  106. ; 36   :     GXRELEASE(m_pDevice);
  107.  
  108.   00016    8b 06         mov     eax, DWORD PTR [esi]
  109.   00018    85 c0         test     eax, eax
  110.   0001a    74 09         je     SHORT $L56242
  111.   0001c    8b 08         mov     ecx, DWORD PTR [eax]
  112.   0001e    50         push     eax
  113.   0001f    ff 51 08     call     DWORD PTR [ecx+8]
  114.   00022    83 26 00     and     DWORD PTR [esi], 0
  115. $L56242:
  116.   00025    5e         pop     esi
  117.  
  118. ; 37   : }
  119.  
  120.   00026    c3         ret     0
  121. ??1CShowArcball@@QAE@XZ ENDP                ; CShowArcball::~CShowArcball
  122. _TEXT    ENDS
  123. PUBLIC    ?CreateEmptyOutline@CShowArcball@@AAEJXZ    ; CShowArcball::CreateEmptyOutline
  124. ; Function compile flags: /Ogs
  125. ;    COMDAT ?CreateEmptyOutline@CShowArcball@@AAEJXZ
  126. _TEXT    SEGMENT
  127. ?CreateEmptyOutline@CShowArcball@@AAEJXZ PROC NEAR    ; CShowArcball::CreateEmptyOutline, COMDAT
  128. ; _this$ = ecx
  129.  
  130. ; 155  : }
  131.  
  132.   00000    8b ff         npad     2
  133.   00002    56         push     esi
  134.  
  135. ; 148  : {
  136.  
  137.   00003    8b f1         mov     esi, ecx
  138.  
  139. ; 149  :     m_cSegments = 0;
  140. ; 150  : 
  141. ; 151  :     GXRELEASE(m_pVertexBuffer);
  142.  
  143.   00005    8b 46 04     mov     eax, DWORD PTR [esi+4]
  144.   00008    83 66 08 00     and     DWORD PTR [esi+8], 0
  145.   0000c    85 c0         test     eax, eax
  146.   0000e    74 0a         je     SHORT $L56312
  147.   00010    8b 08         mov     ecx, DWORD PTR [eax]
  148.   00012    50         push     eax
  149.   00013    ff 51 08     call     DWORD PTR [ecx+8]
  150.   00016    83 66 04 00     and     DWORD PTR [esi+4], 0
  151. $L56312:
  152.  
  153. ; 152  :     GXRELEASE(m_pDevice);
  154.  
  155.   0001a    8b 06         mov     eax, DWORD PTR [esi]
  156.   0001c    85 c0         test     eax, eax
  157.   0001e    74 09         je     SHORT $L56316
  158.   00020    8b 08         mov     ecx, DWORD PTR [eax]
  159.   00022    50         push     eax
  160.   00023    ff 51 08     call     DWORD PTR [ecx+8]
  161.   00026    83 26 00     and     DWORD PTR [esi], 0
  162. $L56316:
  163.  
  164. ; 153  : 
  165. ; 154  :     return S_OK;
  166.  
  167.   00029    33 c0         xor     eax, eax
  168.   0002b    5e         pop     esi
  169.  
  170. ; 155  : }
  171.  
  172.   0002c    c3         ret     0
  173. ?CreateEmptyOutline@CShowArcball@@AAEJXZ ENDP        ; CShowArcball::CreateEmptyOutline
  174. _TEXT    ENDS
  175. PUBLIC    _cosf
  176. EXTRN    __fltused:NEAR
  177. ; Function compile flags: /Ogs
  178. ; File d:\builds\nt32_fre\public\sdk\inc\crt\math.h
  179. ;    COMDAT _cosf
  180. _TEXT    SEGMENT
  181. __X$ = 8                        ; size = 4
  182. _cosf    PROC NEAR                    ; COMDAT
  183.  
  184. ; 432  :         {return ((float)cos((double)_X)); }
  185.  
  186.   00000    8b ff         npad     2
  187.   00002    55         push     ebp
  188.   00003    8b ec         mov     ebp, esp
  189.   00005    d9 45 08     fld     DWORD PTR __X$[ebp]
  190.   00008    d9 ff         fcos
  191.   0000a    5d         pop     ebp
  192.   0000b    c3         ret     0
  193. _cosf    ENDP
  194. _TEXT    ENDS
  195. PUBLIC    _sinf
  196. ; Function compile flags: /Ogs
  197. ;    COMDAT _sinf
  198. _TEXT    SEGMENT
  199. __X$ = 8                        ; size = 4
  200. _sinf    PROC NEAR                    ; COMDAT
  201.  
  202. ; 454  :         {return ((float)sin((double)_X)); }
  203.  
  204.   00000    8b ff         npad     2
  205.   00002    55         push     ebp
  206.   00003    8b ec         mov     ebp, esp
  207.   00005    d9 45 08     fld     DWORD PTR __X$[ebp]
  208.   00008    d9 fe         fsin
  209.   0000a    5d         pop     ebp
  210.   0000b    c3         ret     0
  211. _sinf    ENDP
  212. _TEXT    ENDS
  213. PUBLIC    __real@3b808081
  214. PUBLIC    ??0D3DXCOLOR@@QAE@K@Z                ; D3DXCOLOR::D3DXCOLOR
  215. ;    COMDAT __real@3b808081
  216. ; File d:\builds\nt32_fre\public\sdk\inc\d3dx9math.inl
  217. CONST    SEGMENT
  218. __real@3b808081 DD 03b808081r            ; 0.00392157
  219. ; Function compile flags: /Ogs
  220. CONST    ENDS
  221. ;    COMDAT ??0D3DXCOLOR@@QAE@K@Z
  222. _TEXT    SEGMENT
  223. tv186 = 8                        ; size = 4
  224. tv185 = 8                        ; size = 4
  225. tv184 = 8                        ; size = 4
  226. tv183 = 8                        ; size = 4
  227. _dw$ = 8                        ; size = 4
  228. ??0D3DXCOLOR@@QAE@K@Z PROC NEAR                ; D3DXCOLOR::D3DXCOLOR, COMDAT
  229. ; _this$ = ecx
  230.  
  231. ; 1352 : }
  232.  
  233.   00000    8b ff         npad     2
  234.  
  235. ; 1346 : {
  236.  
  237.   00002    55         push     ebp
  238.   00003    8b ec         mov     ebp, esp
  239.  
  240. ; 1347 :     CONST FLOAT f = 1.0f / 255.0f;
  241. ; 1348 :     r = f * (FLOAT) (unsigned char) (dw >> 16);
  242.  
  243.   00005    d9 05 00 00 00
  244.     00         fld     DWORD PTR __real@3b808081
  245.   0000b    8b c1         mov     eax, ecx
  246.   0000d    8b 4d 08     mov     ecx, DWORD PTR _dw$[ebp]
  247.   00010    8b d1         mov     edx, ecx
  248.   00012    c1 ea 10     shr     edx, 16            ; 00000010H
  249.   00015    0f b6 d2     movzx     edx, dl
  250.   00018    89 55 08     mov     DWORD PTR tv186[ebp], edx
  251.  
  252. ; 1349 :     g = f * (FLOAT) (unsigned char) (dw >>  8);
  253.  
  254.   0001b    8b d1         mov     edx, ecx
  255.   0001d    c1 ea 08     shr     edx, 8
  256.   00020    db 45 08     fild     DWORD PTR tv186[ebp]
  257.   00023    0f b6 d2     movzx     edx, dl
  258.   00026    d8 c9         fmul     ST(0), ST(1)
  259.   00028    89 55 08     mov     DWORD PTR tv185[ebp], edx
  260.  
  261. ; 1350 :     b = f * (FLOAT) (unsigned char) (dw >>  0);
  262.  
  263.   0002b    0f b6 d1     movzx     edx, cl
  264.   0002e    d9 18         fstp     DWORD PTR [eax]
  265.   00030    db 45 08     fild     DWORD PTR tv185[ebp]
  266.   00033    89 55 08     mov     DWORD PTR tv184[ebp], edx
  267.  
  268. ; 1351 :     a = f * (FLOAT) (unsigned char) (dw >> 24);
  269.  
  270.   00036    c1 e9 18     shr     ecx, 24            ; 00000018H
  271.   00039    d8 c9         fmul     ST(0), ST(1)
  272.   0003b    d9 58 04     fstp     DWORD PTR [eax+4]
  273.   0003e    db 45 08     fild     DWORD PTR tv184[ebp]
  274.   00041    89 4d 08     mov     DWORD PTR tv183[ebp], ecx
  275.   00044    d8 c9         fmul     ST(0), ST(1)
  276.   00046    d9 58 08     fstp     DWORD PTR [eax+8]
  277.   00049    db 45 08     fild     DWORD PTR tv183[ebp]
  278.   0004c    d8 c9         fmul     ST(0), ST(1)
  279.   0004e    d9 58 0c     fstp     DWORD PTR [eax+12]
  280.   00051    dd d8         fstp     ST(0)
  281.  
  282. ; 1352 : }
  283.  
  284.   00053    5d         pop     ebp
  285.   00054    c2 04 00     ret     4
  286. ??0D3DXCOLOR@@QAE@K@Z ENDP                ; D3DXCOLOR::D3DXCOLOR
  287. _TEXT    ENDS
  288. PUBLIC    ??0D3DXCOLOR@@QAE@MMMM@Z            ; D3DXCOLOR::D3DXCOLOR
  289. ; Function compile flags: /Ogs
  290. ;    COMDAT ??0D3DXCOLOR@@QAE@MMMM@Z
  291. _TEXT    SEGMENT
  292. _fr$ = 8                        ; size = 4
  293. _fg$ = 12                        ; size = 4
  294. _fb$ = 16                        ; size = 4
  295. _fa$ = 20                        ; size = 4
  296. ??0D3DXCOLOR@@QAE@MMMM@Z PROC NEAR            ; D3DXCOLOR::D3DXCOLOR, COMDAT
  297. ; _this$ = ecx
  298.  
  299. ; 1395 : }
  300.  
  301.   00000    8b ff         npad     2
  302.  
  303. ; 1390 : {
  304.  
  305.   00002    55         push     ebp
  306.   00003    8b ec         mov     ebp, esp
  307.   00005    8b c1         mov     eax, ecx
  308.  
  309. ; 1391 :     r = fr;
  310.  
  311.   00007    8b 4d 08     mov     ecx, DWORD PTR _fr$[ebp]
  312.   0000a    89 08         mov     DWORD PTR [eax], ecx
  313.  
  314. ; 1392 :     g = fg;
  315.  
  316.   0000c    8b 4d 0c     mov     ecx, DWORD PTR _fg$[ebp]
  317.   0000f    89 48 04     mov     DWORD PTR [eax+4], ecx
  318.  
  319. ; 1393 :     b = fb;
  320.  
  321.   00012    8b 4d 10     mov     ecx, DWORD PTR _fb$[ebp]
  322.   00015    89 48 08     mov     DWORD PTR [eax+8], ecx
  323.  
  324. ; 1394 :     a = fa;
  325.  
  326.   00018    8b 4d 14     mov     ecx, DWORD PTR _fa$[ebp]
  327.   0001b    89 48 0c     mov     DWORD PTR [eax+12], ecx
  328.  
  329. ; 1395 : }
  330.  
  331.   0001e    5d         pop     ebp
  332.   0001f    c2 10 00     ret     16            ; 00000010H
  333. ??0D3DXCOLOR@@QAE@MMMM@Z ENDP                ; D3DXCOLOR::D3DXCOLOR
  334. _TEXT    ENDS
  335. PUBLIC    __real@40c90fd8
  336. PUBLIC    __real@4f800000
  337. PUBLIC    ?Init@CShowArcball@@QAEJPAUIDirect3DDevice9@@K@Z ; CShowArcball::Init
  338. ;    COMDAT __real@40c90fd8
  339. ; File d:\builds\nt32_fre\public\sdk\inc\crt\math.h
  340. CONST    SEGMENT
  341. __real@40c90fd8 DD 040c90fd8r            ; 6.28318
  342. CONST    ENDS
  343. ;    COMDAT __real@4f800000
  344. CONST    SEGMENT
  345. __real@4f800000 DD 04f800000r            ; 4.29497e+009
  346. ; Function compile flags: /Ogs
  347. ; File d:\builds\nt32_fre\multimedia\directx\dxsdk\src\mview\gxu\showarcball.cpp
  348. CONST    ENDS
  349. ;    COMDAT ?Init@CShowArcball@@QAEJPAUIDirect3DDevice9@@K@Z
  350. _TEXT    SEGMENT
  351. _hr$ = -8                        ; size = 4
  352. _rgvDest$ = -4                        ; size = 4
  353. tv447 = 8                        ; size = 4
  354. tv444 = 8                        ; size = 4
  355. tv428 = 8                        ; size = 4
  356. tv425 = 8                        ; size = 4
  357. _iSegment$ = 8                        ; size = 4
  358. _pDevice$ = 8                        ; size = 4
  359. tv438 = 12                        ; size = 4
  360. tv433 = 12                        ; size = 4
  361. _cSegments$ = 12                    ; size = 4
  362. ?Init@CShowArcball@@QAEJPAUIDirect3DDevice9@@K@Z PROC NEAR ; CShowArcball::Init, COMDAT
  363. ; _this$ = ecx
  364.  
  365. ; 100  : }
  366.  
  367.   00000    8b ff         npad     2
  368.  
  369. ; 45   : {
  370.  
  371.   00002    55         push     ebp
  372.   00003    8b ec         mov     ebp, esp
  373.   00005    51         push     ecx
  374.   00006    51         push     ecx
  375.  
  376. ; 46   :     HRESULT hr;
  377. ; 47   :     DWORD iSegment;
  378. ; 48   :     D3DXVECTOR3 *rgvDest = NULL;
  379.  
  380.   00007    83 65 fc 00     and     DWORD PTR _rgvDest$[ebp], 0
  381.   0000b    53         push     ebx
  382.   0000c    56         push     esi
  383.   0000d    57         push     edi
  384.   0000e    8b f9         mov     edi, ecx
  385.  
  386. ; 49   : 
  387. ; 50   :     hr = CreateEmptyOutline();
  388.  
  389.   00010    e8 00 00 00 00     call     ?CreateEmptyOutline@CShowArcball@@AAEJXZ ; CShowArcball::CreateEmptyOutline
  390.  
  391. ; 51   :     if (FAILED(hr))
  392.  
  393.   00015    85 c0         test     eax, eax
  394.   00017    89 45 f8     mov     DWORD PTR _hr$[ebp], eax
  395.   0001a    0f 8c 77 01 00
  396.     00         jl     $e_Exit$56255
  397.  
  398. ; 52   :         goto e_Exit;
  399. ; 53   : 
  400. ; 54   :     m_pDevice = pDevice;
  401.  
  402.   00020    8b 45 08     mov     eax, DWORD PTR _pDevice$[ebp]
  403.   00023    89 07         mov     DWORD PTR [edi], eax
  404.  
  405. ; 55   :     m_pDevice->AddRef();
  406.  
  407.   00025    8b 08         mov     ecx, DWORD PTR [eax]
  408.   00027    50         push     eax
  409.   00028    ff 51 04     call     DWORD PTR [ecx+4]
  410.  
  411. ; 56   : 
  412. ; 57   :     m_cSegments = cSegments;
  413.  
  414.   0002b    8b 75 0c     mov     esi, DWORD PTR _cSegments$[ebp]
  415.  
  416. ; 58   : 
  417. ; 59   :     hr = m_pDevice->CreateVertexBuffer(sizeof(D3DXVECTOR3) * (cSegments+1) * 3, 
  418. ; 60   :                         D3DUSAGE_WRITEONLY, 
  419. ; 61   :                         D3DFVF_XYZ, D3DPOOL_MANAGED, &m_pVertexBuffer, NULL);
  420.  
  421.   0002e    8b 07         mov     eax, DWORD PTR [edi]
  422.   00030    6a 00         push     0
  423.   00032    8d 5f 04     lea     ebx, DWORD PTR [edi+4]
  424.   00035    53         push     ebx
  425.   00036    6a 01         push     1
  426.   00038    6a 02         push     2
  427.   0003a    6a 08         push     8
  428.   0003c    8d 54 f6 09     lea     edx, DWORD PTR [esi+esi*8+9]
  429.   00040    c1 e2 02     shl     edx, 2
  430.   00043    52         push     edx
  431.   00044    89 77 08     mov     DWORD PTR [edi+8], esi
  432.   00047    8b 08         mov     ecx, DWORD PTR [eax]
  433.   00049    50         push     eax
  434.   0004a    ff 51 68     call     DWORD PTR [ecx+104]
  435.  
  436. ; 62   :     if (FAILED(hr))
  437.  
  438.   0004d    85 c0         test     eax, eax
  439.   0004f    89 45 f8     mov     DWORD PTR _hr$[ebp], eax
  440.   00052    0f 8c 3f 01 00
  441.     00         jl     $e_Exit$56255
  442.  
  443. ; 63   :         goto e_Exit;
  444. ; 64   : 
  445. ; 65   : 
  446. ; 66   :     hr = m_pVertexBuffer->Lock(0,0, (PVOID*)&rgvDest, D3DLOCK_NOSYSLOCK);
  447.  
  448.   00058    8b 1b         mov     ebx, DWORD PTR [ebx]
  449.   0005a    8b 03         mov     eax, DWORD PTR [ebx]
  450.   0005c    68 00 08 00 00     push     2048            ; 00000800H
  451.   00061    8d 4d fc     lea     ecx, DWORD PTR _rgvDest$[ebp]
  452.   00064    51         push     ecx
  453.   00065    6a 00         push     0
  454.   00067    6a 00         push     0
  455.   00069    53         push     ebx
  456.   0006a    ff 50 2c     call     DWORD PTR [eax+44]
  457.  
  458. ; 67   :     if (FAILED(hr))
  459.  
  460.   0006d    85 c0         test     eax, eax
  461.   0006f    89 45 f8     mov     DWORD PTR _hr$[ebp], eax
  462.   00072    0f 8c 1f 01 00
  463.     00         jl     $e_Exit$56255
  464.  
  465. ; 68   :         goto e_Exit;
  466. ; 69   :     
  467. ; 70   :     for (iSegment = 0; iSegment < cSegments+1; iSegment++)
  468.  
  469.   00078    d9 05 00 00 00
  470.     00         fld     DWORD PTR __real@40c90fd8
  471.   0007e    8d 56 01     lea     edx, DWORD PTR [esi+1]
  472.   00081    33 c9         xor     ecx, ecx
  473.   00083    85 d2         test     edx, edx
  474.   00085    76 4c         jbe     SHORT $L56267
  475.   00087    85 f6         test     esi, esi
  476.   00089    89 75 08     mov     DWORD PTR tv447[ebp], esi
  477.   0008c    db 45 08     fild     DWORD PTR tv447[ebp]
  478.   0008f    7d 06         jge     SHORT $L56382
  479.   00091    d8 05 00 00 00
  480.     00         fadd     DWORD PTR __real@4f800000
  481. $L56382:
  482.   00097    33 c0         xor     eax, eax
  483. $L56265:
  484.  
  485. ; 71   :     {
  486. ; 72   :         rgvDest[iSegment].x = cosf(PI*2 * ((float)iSegment/(float)cSegments));
  487.  
  488.   00099    85 c9         test     ecx, ecx
  489.   0009b    89 4d 08     mov     DWORD PTR tv444[ebp], ecx
  490.   0009e    db 45 08     fild     DWORD PTR tv444[ebp]
  491.   000a1    7d 06         jge     SHORT $L56385
  492.   000a3    d8 05 00 00 00
  493.     00         fadd     DWORD PTR __real@4f800000
  494. $L56385:
  495.   000a9    d8 f1         fdiv     ST(0), ST(1)
  496.   000ab    8b 5d fc     mov     ebx, DWORD PTR _rgvDest$[ebp]
  497.   000ae    41         inc     ecx
  498.   000af    d8 ca         fmul     ST(0), ST(2)
  499.   000b1    d9 c0         fld     ST(0)
  500.   000b3    d9 ff         fcos
  501.   000b5    d9 1c 18     fstp     DWORD PTR [eax+ebx]
  502.  
  503. ; 73   :         rgvDest[iSegment].y = sinf(PI*2 * ((float)iSegment/(float)cSegments));
  504.  
  505.   000b8    8b 5d fc     mov     ebx, DWORD PTR _rgvDest$[ebp]
  506.   000bb    d9 fe         fsin
  507.   000bd    83 c0 0c     add     eax, 12            ; 0000000cH
  508.   000c0    3b ca         cmp     ecx, edx
  509.   000c2    d9 5c 18 f8     fstp     DWORD PTR [eax+ebx-8]
  510.  
  511. ; 74   :         rgvDest[iSegment].z = 0.0f;
  512.  
  513.   000c6    8b 5d fc     mov     ebx, DWORD PTR _rgvDest$[ebp]
  514.   000c9    d9 ee         fldz
  515.   000cb    d9 5c 18 fc     fstp     DWORD PTR [eax+ebx-4]
  516.   000cf    72 c8         jb     SHORT $L56265
  517.   000d1    dd d8         fstp     ST(0)
  518. $L56267:
  519.  
  520. ; 75   :     }
  521. ; 76   : 
  522. ; 77   :     rgvDest += cSegments+1;
  523.  
  524.   000d3    8b 4d fc     mov     ecx, DWORD PTR _rgvDest$[ebp]
  525.   000d6    8d 04 76     lea     eax, DWORD PTR [esi+esi*2]
  526.   000d9    c1 e0 02     shl     eax, 2
  527.   000dc    8d 4c 01 0c     lea     ecx, DWORD PTR [ecx+eax+12]
  528.   000e0    89 4d fc     mov     DWORD PTR _rgvDest$[ebp], ecx
  529.  
  530. ; 78   :     for (iSegment = 0; iSegment < cSegments+1; iSegment++)
  531.  
  532.   000e3    33 c9         xor     ecx, ecx
  533.   000e5    3b d1         cmp     edx, ecx
  534.   000e7    89 4d 08     mov     DWORD PTR _iSegment$[ebp], ecx
  535.   000ea    76 4d         jbe     SHORT $L56274
  536.   000ec    85 f6         test     esi, esi
  537.   000ee    89 75 0c     mov     DWORD PTR tv438[ebp], esi
  538.   000f1    db 45 0c     fild     DWORD PTR tv438[ebp]
  539.   000f4    7d 06         jge     SHORT $L56377
  540.   000f6    d8 05 00 00 00
  541.     00         fadd     DWORD PTR __real@4f800000
  542. $L56377:
  543.  
  544. ; 79   :     {
  545. ; 80   :         rgvDest[iSegment].x = 0.0f;
  546.  
  547.   000fc    8b 5d fc     mov     ebx, DWORD PTR _rgvDest$[ebp]
  548.   000ff    d9 ee         fldz
  549.   00101    d9 1c 19     fstp     DWORD PTR [ecx+ebx]
  550.  
  551. ; 81   :         rgvDest[iSegment].y = cosf(PI*2 * ((float)iSegment/(float)cSegments));
  552.  
  553.   00104    8b 5d 08     mov     ebx, DWORD PTR _iSegment$[ebp]
  554.   00107    db 45 08     fild     DWORD PTR _iSegment$[ebp]
  555.   0010a    85 db         test     ebx, ebx
  556.   0010c    7d 06         jge     SHORT $L56387
  557.   0010e    d8 05 00 00 00
  558.     00         fadd     DWORD PTR __real@4f800000
  559. $L56387:
  560.   00114    d8 f1         fdiv     ST(0), ST(1)
  561.   00116    8b 5d fc     mov     ebx, DWORD PTR _rgvDest$[ebp]
  562.   00119    ff 45 08     inc     DWORD PTR _iSegment$[ebp]
  563.   0011c    83 c1 0c     add     ecx, 12            ; 0000000cH
  564.   0011f    39 55 08     cmp     DWORD PTR _iSegment$[ebp], edx
  565.   00122    d8 ca         fmul     ST(0), ST(2)
  566.   00124    d9 c0         fld     ST(0)
  567.   00126    d9 ff         fcos
  568.   00128    d9 5c 19 f8     fstp     DWORD PTR [ecx+ebx-8]
  569.  
  570. ; 82   :         rgvDest[iSegment].z = sinf(PI*2 * ((float)iSegment/(float)cSegments));
  571.  
  572.   0012c    8b 5d fc     mov     ebx, DWORD PTR _rgvDest$[ebp]
  573.   0012f    d9 fe         fsin
  574.   00131    d9 5c 19 fc     fstp     DWORD PTR [ecx+ebx-4]
  575.   00135    72 c5         jb     SHORT $L56377
  576.   00137    dd d8         fstp     ST(0)
  577. $L56274:
  578.  
  579. ; 83   :     }
  580. ; 84   : 
  581. ; 85   :     rgvDest += cSegments+1;
  582.  
  583.   00139    8b 4d fc     mov     ecx, DWORD PTR _rgvDest$[ebp]
  584.   0013c    8d 44 01 0c     lea     eax, DWORD PTR [ecx+eax+12]
  585.  
  586. ; 86   :     for (iSegment = 0; iSegment < cSegments+1; iSegment++)
  587.  
  588.   00140    33 c9         xor     ecx, ecx
  589.   00142    85 d2         test     edx, edx
  590.   00144    89 45 fc     mov     DWORD PTR _rgvDest$[ebp], eax
  591.   00147    76 4c         jbe     SHORT $L56380
  592.   00149    85 f6         test     esi, esi
  593.   0014b    89 75 08     mov     DWORD PTR tv428[ebp], esi
  594.   0014e    db 45 08     fild     DWORD PTR tv428[ebp]
  595.   00151    7d 06         jge     SHORT $L56388
  596.   00153    d8 05 00 00 00
  597.     00         fadd     DWORD PTR __real@4f800000
  598. $L56388:
  599.  
  600. ; 83   :     }
  601. ; 84   : 
  602. ; 85   :     rgvDest += cSegments+1;
  603.  
  604.   00159    33 c0         xor     eax, eax
  605. $L56378:
  606.  
  607. ; 87   :     {
  608. ; 88   :         rgvDest[iSegment].x = cosf(PI*2 * ((float)iSegment/(float)cSegments));
  609.  
  610.   0015b    85 c9         test     ecx, ecx
  611.   0015d    89 4d 08     mov     DWORD PTR tv425[ebp], ecx
  612.   00160    db 45 08     fild     DWORD PTR tv425[ebp]
  613.   00163    7d 06         jge     SHORT $L56389
  614.   00165    d8 05 00 00 00
  615.     00         fadd     DWORD PTR __real@4f800000
  616. $L56389:
  617.   0016b    d8 f1         fdiv     ST(0), ST(1)
  618.   0016d    8b 75 fc     mov     esi, DWORD PTR _rgvDest$[ebp]
  619.   00170    41         inc     ecx
  620.   00171    d8 ca         fmul     ST(0), ST(2)
  621.   00173    d9 c0         fld     ST(0)
  622.   00175    d9 ff         fcos
  623.   00177    d9 1c 30     fstp     DWORD PTR [eax+esi]
  624.  
  625. ; 89   :         rgvDest[iSegment].y = 0.0f;
  626.  
  627.   0017a    8b 75 fc     mov     esi, DWORD PTR _rgvDest$[ebp]
  628.   0017d    d9 ee         fldz
  629.   0017f    d9 5c 30 04     fstp     DWORD PTR [eax+esi+4]
  630.  
  631. ; 90   :         rgvDest[iSegment].z = sinf(PI*2 * ((float)iSegment/(float)cSegments));
  632.  
  633.   00183    8b 75 fc     mov     esi, DWORD PTR _rgvDest$[ebp]
  634.   00186    83 c0 0c     add     eax, 12            ; 0000000cH
  635.   00189    3b ca         cmp     ecx, edx
  636.   0018b    d9 fe         fsin
  637.   0018d    d9 5c 30 fc     fstp     DWORD PTR [eax+esi-4]
  638.   00191    72 c8         jb     SHORT $L56378
  639.   00193    dd d8         fstp     ST(0)
  640. $L56380:
  641.  
  642. ; 82   :         rgvDest[iSegment].z = sinf(PI*2 * ((float)iSegment/(float)cSegments));
  643.  
  644.   00195    dd d8         fstp     ST(0)
  645. $e_Exit$56255:
  646.  
  647. ; 91   :     }
  648. ; 92   : 
  649. ; 93   : e_Exit:
  650. ; 94   :     if (rgvDest != NULL)
  651.  
  652.   00197    83 7d fc 00     cmp     DWORD PTR _rgvDest$[ebp], 0
  653.   0019b    74 09         je     SHORT $L56286
  654.  
  655. ; 95   :     {
  656. ; 96   :         m_pVertexBuffer->Unlock();
  657.  
  658.   0019d    8b 7f 04     mov     edi, DWORD PTR [edi+4]
  659.   001a0    8b 07         mov     eax, DWORD PTR [edi]
  660.   001a2    57         push     edi
  661.   001a3    ff 50 30     call     DWORD PTR [eax+48]
  662. $L56286:
  663.  
  664. ; 97   :     }
  665. ; 98   : 
  666. ; 99   :     return hr;
  667.  
  668.   001a6    8b 45 f8     mov     eax, DWORD PTR _hr$[ebp]
  669.   001a9    5f         pop     edi
  670.   001aa    5e         pop     esi
  671.   001ab    5b         pop     ebx
  672.  
  673. ; 100  : }
  674.  
  675.   001ac    c9         leave
  676.   001ad    c2 08 00     ret     8
  677. ?Init@CShowArcball@@QAEJPAUIDirect3DDevice9@@K@Z ENDP    ; CShowArcball::Init
  678. _TEXT    ENDS
  679. PUBLIC    __real@3e4ccccd
  680. PUBLIC    ?Draw@CShowArcball@@QAEJPAUID3DXEffect@@K@Z    ; CShowArcball::Draw
  681. PUBLIC    ??_C@_04JKCKMDGO@vClr?$AA@            ; `string'
  682. ;    COMDAT __real@3e4ccccd
  683. ; File d:\builds\nt32_fre\public\sdk\inc\d3dx9math.inl
  684. CONST    SEGMENT
  685. __real@3e4ccccd DD 03e4ccccdr            ; 0.2
  686. CONST    ENDS
  687. ;    COMDAT ??_C@_04JKCKMDGO@vClr?$AA@
  688. CONST    SEGMENT
  689. ??_C@_04JKCKMDGO@vClr?$AA@ DB 'vClr', 00H        ; `string'
  690. ; Function compile flags: /Ogs
  691. ; File d:\builds\nt32_fre\multimedia\directx\dxsdk\src\mview\gxu\showarcball.cpp
  692. CONST    ENDS
  693. ;    COMDAT ?Draw@CShowArcball@@QAEJPAUID3DXEffect@@K@Z
  694. _TEXT    SEGMENT
  695. $T56393 = -68                        ; size = 16
  696. $T56392 = -52                        ; size = 16
  697. $T56391 = -36                        ; size = 16
  698. _vClr$ = -20                        ; size = 16
  699. _cPasses$ = -4                        ; size = 4
  700. _pfxColor$ = 8                        ; size = 4
  701. tv361 = 12                        ; size = 4
  702. tv360 = 12                        ; size = 4
  703. tv359 = 12                        ; size = 4
  704. tv358 = 12                        ; size = 4
  705. _iPass$ = 12                        ; size = 4
  706. _dwColor$ = 12                        ; size = 4
  707. ?Draw@CShowArcball@@QAEJPAUID3DXEffect@@K@Z PROC NEAR    ; CShowArcball::Draw, COMDAT
  708. ; _this$ = ecx
  709.  
  710. ; 144  : }
  711.  
  712.   00000    8b ff         npad     2
  713.  
  714. ; 108  : {
  715.  
  716.   00002    55         push     ebp
  717.   00003    8b ec         mov     ebp, esp
  718.   00005    83 ec 44     sub     esp, 68            ; 00000044H
  719.  
  720. ; 109  :     HRESULT hr;
  721. ; 110  :     UINT iPass;
  722. ; 111  :     UINT cPasses;
  723. ; 112  :     D3DXCOLOR vClr(dwColor);
  724.  
  725.   00008    8b 45 0c     mov     eax, DWORD PTR _dwColor$[ebp]
  726.   0000b    d9 05 00 00 00
  727.     00         fld     DWORD PTR __real@3b808081
  728.   00011    53         push     ebx
  729.   00012    8b d9         mov     ebx, ecx
  730.   00014    8b c8         mov     ecx, eax
  731.   00016    c1 e9 10     shr     ecx, 16            ; 00000010H
  732.   00019    0f b6 c9     movzx     ecx, cl
  733.   0001c    89 4d 0c     mov     DWORD PTR tv361[ebp], ecx
  734.   0001f    8b c8         mov     ecx, eax
  735.   00021    c1 e9 08     shr     ecx, 8
  736.   00024    db 45 0c     fild     DWORD PTR tv361[ebp]
  737.   00027    0f b6 c9     movzx     ecx, cl
  738.   0002a    d8 c9         fmul     ST(0), ST(1)
  739.   0002c    89 4d 0c     mov     DWORD PTR tv360[ebp], ecx
  740.   0002f    0f b6 c8     movzx     ecx, al
  741.   00032    d9 5d ec     fstp     DWORD PTR _vClr$[ebp]
  742.   00035    db 45 0c     fild     DWORD PTR tv360[ebp]
  743.   00038    89 4d 0c     mov     DWORD PTR tv359[ebp], ecx
  744.   0003b    c1 e8 18     shr     eax, 24            ; 00000018H
  745.   0003e    56         push     esi
  746.  
  747. ; 113  : 
  748. ; 114  :     pfxColor->Begin(&cPasses, 0);
  749.  
  750.   0003f    8b 75 08     mov     esi, DWORD PTR _pfxColor$[ebp]
  751.   00042    d8 c9         fmul     ST(0), ST(1)
  752.   00044    57         push     edi
  753.   00045    33 ff         xor     edi, edi
  754.   00047    d9 5d f0     fstp     DWORD PTR _vClr$[ebp+4]
  755.   0004a    57         push     edi
  756.   0004b    db 45 0c     fild     DWORD PTR tv359[ebp]
  757.   0004e    89 45 0c     mov     DWORD PTR tv358[ebp], eax
  758.   00051    8b 06         mov     eax, DWORD PTR [esi]
  759.   00053    8d 4d fc     lea     ecx, DWORD PTR _cPasses$[ebp]
  760.   00056    d8 c9         fmul     ST(0), ST(1)
  761.   00058    51         push     ecx
  762.   00059    56         push     esi
  763.   0005a    d9 5d f4     fstp     DWORD PTR _vClr$[ebp+8]
  764.   0005d    db 45 0c     fild     DWORD PTR tv358[ebp]
  765.   00060    d8 c9         fmul     ST(0), ST(1)
  766.   00062    d9 5d f8     fstp     DWORD PTR _vClr$[ebp+12]
  767.   00065    dd d8         fstp     ST(0)
  768.   00067    ff 90 04 01 00
  769.     00         call     DWORD PTR [eax+260]
  770.  
  771. ; 115  : 
  772. ; 116  :     for (iPass = 0; iPass < cPasses; iPass++)
  773.  
  774.   0006d    39 7d fc     cmp     DWORD PTR _cPasses$[ebp], edi
  775.   00070    89 7d 0c     mov     DWORD PTR _iPass$[ebp], edi
  776.   00073    0f 86 15 01 00
  777.     00         jbe     $L56298
  778.  
  779. ; 123  : 
  780. ; 124  :         vClr = D3DXCOLOR(1.0f, 0.2f, 0.2f, 1.0f);
  781.  
  782.   00079    d9 e8         fld1
  783.   0007b    d9 5d dc     fstp     DWORD PTR $T56391[ebp]
  784.   0007e    d9 05 00 00 00
  785.     00         fld     DWORD PTR __real@3e4ccccd
  786.   00084    d9 55 e0     fst     DWORD PTR $T56391[ebp+4]
  787.   00087    d9 55 e4     fst     DWORD PTR $T56391[ebp+8]
  788.   0008a    d9 e8         fld1
  789.   0008c    d9 5d e8     fstp     DWORD PTR $T56391[ebp+12]
  790.  
  791. ; 128  : 
  792. ; 129  :         vClr = D3DXCOLOR(0.2f, 1.0f, 0.2f, 1.0f);
  793.  
  794.   0008f    d9 55 cc     fst     DWORD PTR $T56392[ebp]
  795.   00092    d9 e8         fld1
  796.   00094    d9 5d d0     fstp     DWORD PTR $T56392[ebp+4]
  797.   00097    d9 55 d4     fst     DWORD PTR $T56392[ebp+8]
  798.   0009a    d9 e8         fld1
  799.   0009c    d9 5d d8     fstp     DWORD PTR $T56392[ebp+12]
  800.  
  801. ; 133  : 
  802. ; 134  :         vClr = D3DXCOLOR(0.2f, 0.2f, 1.0f, 1.0f);
  803.  
  804.   0009f    d9 55 bc     fst     DWORD PTR $T56393[ebp]
  805.   000a2    d9 5d c0     fstp     DWORD PTR $T56393[ebp+4]
  806.   000a5    d9 e8         fld1
  807.   000a7    d9 5d c4     fstp     DWORD PTR $T56393[ebp+8]
  808.   000aa    d9 e8         fld1
  809.   000ac    d9 5d c8     fstp     DWORD PTR $T56393[ebp+12]
  810.   000af    eb 02         jmp     SHORT $L56296
  811. $L56411:
  812.   000b1    33 ff         xor     edi, edi
  813. $L56296:
  814.  
  815. ; 117  :     {
  816. ; 118  :         m_pDevice->SetFVF(D3DFVF_XYZ);
  817.  
  818.   000b3    8b 03         mov     eax, DWORD PTR [ebx]
  819.   000b5    8b 08         mov     ecx, DWORD PTR [eax]
  820.   000b7    6a 02         push     2
  821.   000b9    50         push     eax
  822.   000ba    ff 91 64 01 00
  823.     00         call     DWORD PTR [ecx+356]
  824.  
  825. ; 119  : 
  826. ; 120  :         pfxColor->BeginPass(iPass);
  827.  
  828.   000c0    ff 75 0c     push     DWORD PTR _iPass$[ebp]
  829.   000c3    8b 06         mov     eax, DWORD PTR [esi]
  830.   000c5    56         push     esi
  831.   000c6    ff 90 08 01 00
  832.     00         call     DWORD PTR [eax+264]
  833.  
  834. ; 121  : 
  835. ; 122  :         m_pDevice->SetStreamSource(0, m_pVertexBuffer, 0, sizeof(D3DXVECTOR3));
  836.  
  837.   000cc    8b 03         mov     eax, DWORD PTR [ebx]
  838.   000ce    8b 08         mov     ecx, DWORD PTR [eax]
  839.   000d0    6a 0c         push     12            ; 0000000cH
  840.   000d2    57         push     edi
  841.   000d3    ff 73 04     push     DWORD PTR [ebx+4]
  842.   000d6    57         push     edi
  843.   000d7    50         push     eax
  844.   000d8    ff 91 90 01 00
  845.     00         call     DWORD PTR [ecx+400]
  846.  
  847. ; 125  :         pfxColor->SetVector("vClr", (D3DXVECTOR4*)&vClr);                       
  848.  
  849.   000de    8b 45 08     mov     eax, DWORD PTR _pfxColor$[ebp]
  850.   000e1    8b 08         mov     ecx, DWORD PTR [eax]
  851.   000e3    8d 75 dc     lea     esi, DWORD PTR $T56391[ebp]
  852.   000e6    8d 7d ec     lea     edi, DWORD PTR _vClr$[ebp]
  853.   000e9    a5         movsd
  854.   000ea    a5         movsd
  855.   000eb    8d 55 ec     lea     edx, DWORD PTR _vClr$[ebp]
  856.   000ee    52         push     edx
  857.   000ef    a5         movsd
  858.   000f0    68 00 00 00 00     push     OFFSET FLAT:??_C@_04JKCKMDGO@vClr?$AA@
  859.   000f5    50         push     eax
  860.   000f6    a5         movsd
  861.   000f7    ff 91 88 00 00
  862.     00         call     DWORD PTR [ecx+136]
  863.  
  864. ; 126  :         hr = m_pDevice->DrawPrimitive(D3DPT_LINESTRIP, 
  865. ; 127  :                                      0, m_cSegments);
  866.  
  867.   000fd    ff 73 08     push     DWORD PTR [ebx+8]
  868.   00100    8b 03         mov     eax, DWORD PTR [ebx]
  869.   00102    8b 08         mov     ecx, DWORD PTR [eax]
  870.   00104    6a 00         push     0
  871.   00106    6a 03         push     3
  872.   00108    50         push     eax
  873.   00109    ff 91 44 01 00
  874.     00         call     DWORD PTR [ecx+324]
  875.  
  876. ; 130  :         pfxColor->SetVector("vClr", (D3DXVECTOR4*)&vClr);                       
  877.  
  878.   0010f    8b 45 08     mov     eax, DWORD PTR _pfxColor$[ebp]
  879.   00112    8b 08         mov     ecx, DWORD PTR [eax]
  880.   00114    8d 75 cc     lea     esi, DWORD PTR $T56392[ebp]
  881.   00117    8d 7d ec     lea     edi, DWORD PTR _vClr$[ebp]
  882.   0011a    a5         movsd
  883.   0011b    a5         movsd
  884.   0011c    8d 55 ec     lea     edx, DWORD PTR _vClr$[ebp]
  885.   0011f    52         push     edx
  886.   00120    a5         movsd
  887.   00121    68 00 00 00 00     push     OFFSET FLAT:??_C@_04JKCKMDGO@vClr?$AA@
  888.   00126    50         push     eax
  889.   00127    a5         movsd
  890.   00128    ff 91 88 00 00
  891.     00         call     DWORD PTR [ecx+136]
  892.  
  893. ; 131  :         hr = m_pDevice->DrawPrimitive(D3DPT_LINESTRIP, 
  894. ; 132  :                                      m_cSegments + 1, m_cSegments);
  895.  
  896.   0012e    8b 4b 08     mov     ecx, DWORD PTR [ebx+8]
  897.   00131    8b 03         mov     eax, DWORD PTR [ebx]
  898.   00133    8b 10         mov     edx, DWORD PTR [eax]
  899.   00135    51         push     ecx
  900.   00136    41         inc     ecx
  901.   00137    51         push     ecx
  902.   00138    6a 03         push     3
  903.   0013a    50         push     eax
  904.   0013b    ff 92 44 01 00
  905.     00         call     DWORD PTR [edx+324]
  906.  
  907. ; 133  : 
  908. ; 134  :         vClr = D3DXCOLOR(0.2f, 0.2f, 1.0f, 1.0f);
  909.  
  910.   00141    8d 75 bc     lea     esi, DWORD PTR $T56393[ebp]
  911.   00144    8d 7d ec     lea     edi, DWORD PTR _vClr$[ebp]
  912.   00147    a5         movsd
  913.   00148    a5         movsd
  914.   00149    a5         movsd
  915.  
  916. ; 135  :         pfxColor->SetVector("vClr", (D3DXVECTOR4*)&vClr);                       
  917.  
  918.   0014a    8d 4d ec     lea     ecx, DWORD PTR _vClr$[ebp]
  919.   0014d    51         push     ecx
  920.   0014e    a5         movsd
  921.   0014f    8b 75 08     mov     esi, DWORD PTR _pfxColor$[ebp]
  922.   00152    8b 06         mov     eax, DWORD PTR [esi]
  923.   00154    68 00 00 00 00     push     OFFSET FLAT:??_C@_04JKCKMDGO@vClr?$AA@
  924.   00159    56         push     esi
  925.   0015a    ff 90 88 00 00
  926.     00         call     DWORD PTR [eax+136]
  927.  
  928. ; 136  :         hr = m_pDevice->DrawPrimitive(D3DPT_LINESTRIP, 
  929. ; 137  :                                      m_cSegments * 2 + 2, m_cSegments);
  930.  
  931.   00160    8b 4b 08     mov     ecx, DWORD PTR [ebx+8]
  932.   00163    8b 03         mov     eax, DWORD PTR [ebx]
  933.   00165    8b 10         mov     edx, DWORD PTR [eax]
  934.   00167    51         push     ecx
  935.   00168    8d 4c 09 02     lea     ecx, DWORD PTR [ecx+ecx+2]
  936.   0016c    51         push     ecx
  937.   0016d    6a 03         push     3
  938.   0016f    50         push     eax
  939.   00170    ff 92 44 01 00
  940.     00         call     DWORD PTR [edx+324]
  941.  
  942. ; 138  :         pfxColor->EndPass();
  943.  
  944.   00176    8b 06         mov     eax, DWORD PTR [esi]
  945.   00178    56         push     esi
  946.   00179    ff 90 10 01 00
  947.     00         call     DWORD PTR [eax+272]
  948.   0017f    ff 45 0c     inc     DWORD PTR _iPass$[ebp]
  949.   00182    8b 45 0c     mov     eax, DWORD PTR _iPass$[ebp]
  950.   00185    3b 45 fc     cmp     eax, DWORD PTR _cPasses$[ebp]
  951.   00188    0f 82 23 ff ff
  952.     ff         jb     $L56411
  953. $L56298:
  954.  
  955. ; 139  :     }
  956. ; 140  : 
  957. ; 141  :     pfxColor->End();
  958.  
  959.   0018e    8b 06         mov     eax, DWORD PTR [esi]
  960.   00190    56         push     esi
  961.   00191    ff 90 14 01 00
  962.     00         call     DWORD PTR [eax+276]
  963.   00197    5f         pop     edi
  964.   00198    5e         pop     esi
  965.  
  966. ; 142  : 
  967. ; 143  :     return S_OK;
  968.  
  969.   00199    33 c0         xor     eax, eax
  970.   0019b    5b         pop     ebx
  971.  
  972. ; 144  : }
  973.  
  974.   0019c    c9         leave
  975.   0019d    c2 08 00     ret     8
  976. ?Draw@CShowArcball@@QAEJPAUID3DXEffect@@K@Z ENDP    ; CShowArcball::Draw
  977. _TEXT    ENDS
  978. END
  979.